package com.jml.二期.ArrayList001.ext;

import java.util.Arrays;

public class JmlCopyOnWriteArrayList<E> implements JmlList<E> {

    /**
     * 数组存放数据
     */
    private transient volatile Object[] array;

    final Object[] getArray() {
        return array;
    }

    public JmlCopyOnWriteArrayList() {
        setArray(new Object[0]);
    }

    @Override
    public int size() {
        return 0;
    }

    @Override
    public boolean add(E e) {
        // 1.获取原来的数组
        Object[] elements = getArray();
        // 2.获取原来数组的长度 0
        int len = elements.length;
        // 3.新的数组为1
        Object[] newElements = Arrays.copyOf(elements, len + 1);
        newElements[len] = e;
        // 4.返回新的数组对象
        setArray(newElements);
        return false;
    }

    final void setArray(Object[] a) {
        array = a;
    }

    @Override
    public E get(int index) {

        return (E)array[index];
    }

    @Override
    public E remove(int index) {
        return null;
    }
}
